home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
081-090
/
amok85
/
ampel
/
ampel.mod
next >
Wrap
Text File
|
1993-11-04
|
816b
|
48 lines
MODULE Ampel;
IMPORT io;
TYPE
Ampel* = POINTER TO AmpelDesc;
AmpelDesc* = RECORD
rot*,gruen*: BOOLEAN;
END;
PROCEDURE (a: Ampel) Leuchte*(on: BOOLEAN): CHAR;
BEGIN
IF on THEN RETURN "*"; ELSE RETURN "O"; END;
END Leuchte;
PROCEDURE (a: Ampel) Schalten*();
BEGIN
(* --- geht auch einfacher *)
IF a.gruen THEN
a.gruen := FALSE; a.rot := TRUE;
ELSE
a.gruen := TRUE; a.rot := FALSE;
END;
END Schalten;
PROCEDURE (a: Ampel) Anzeigen*();
BEGIN
io.Write(a.Leuchte(a.rot));
io.Write(a.Leuchte(a.gruen));
END Anzeigen;
PROCEDURE (a: Ampel) istRot*(): BOOLEAN;
BEGIN
RETURN a.rot & ~a.gruen;
END istRot;
PROCEDURE (a: Ampel) istGruen*(): BOOLEAN;
BEGIN
RETURN a.gruen & ~a.rot;
END istGruen;
PROCEDURE Init*(a: Ampel);
BEGIN
a.rot := TRUE; a.gruen := FALSE;
END Init;
END Ampel.